package com.itwlj.service;

import com.itwlj.dto.CommentDTO;
import com.itwlj.dto.OrderDTO;
import com.itwlj.dto.OrderPageQueryDTO;
import com.itwlj.result.PageResult;
import com.itwlj.vo.OrderVO;
import com.itwlj.vo.OrdersPreviewVO;

import java.util.List;

public interface OrderService {

    /**
     * 订单分页查询
     *
     * @param orderPageQueryDTO
     * @return
     */
    PageResult pageQuery(OrderPageQueryDTO orderPageQueryDTO);

    /**
     * 订单批量删除(逻辑删除)
     *
     * @param ids
     */
    void softDeleteBatch(List<Long> ids);

    /**
     * 根据id修改商品
     *
     * @param orderDTO
     */
    void update(OrderDTO orderDTO);

    /**
     * 获取地址和商品信息
     *
     * @return
     */
    OrdersPreviewVO getOrdersPreview();

    /**
     * 新增订单
     *
     * @param orderDTO
     * @return
     */
    Long insert(OrderDTO orderDTO);

    /**
     * 根据id查询订单
     *
     * @param id
     * @return
     */
    OrderVO getById(Long id);

    /**
     * 订单发货
     *
     * @param id
     */
    void shipOrder(Long id);

    /**
     * 订单运输
     *
     * @param id
     */
    void transportOrder(Long id);

    /**
     * 取消订单
     *
     * @param id
     */
    void cancelOrder(Long id);

    /**
     * 用户取消订单
     *
     * @param id
     */
    void userCancelOrder(Long id);

    /**
     * 确认收货
     *
     * @param id
     */
    void confirmReceive(Long id);

    /**
     * 评论商品
     *
     * @param commentDTO
     */
    void commentOrder(CommentDTO commentDTO);
}
